import 'dart:math';

void main(List<String> arguments) {
  // 1 задание
  // Создайте текстовую переменную a = ‘hello world’; Напишите функцию,
  // без возвращаемого значения. Функция меняет порядок слов на обратный.
  // Например было ‘hello world’, стало ‘world hello’

  String a = 'hello world Kirill';

  void reverseString(String text) {
    print('Исходный порядок слов: $text');
    print('Обратный порядок слов: ${text.split(' ').reversed.join(' ')}');
  }

  reverseString(a);

  // 2 задание
  // Создайте и проинициализируйте массив чисел с произвольным размером.
  // Напишите функцию, которая вычисляет среднее арифметическое число массива
  // и возвращает double результат. Распечатайте результат в консоли.

  var numbers = [1, 3, 4, 5, 7, 2, 4];

  double average(List array) {
    double sum = 0;
    for (var index in array) {
      sum += index;
    }
    return sum;
  }

  print('Числа в массиве: ${numbers.join(', ')}');
  print('Сумма чисел в массиве: ${average(numbers)}');

  // 3 задание
  // Модернизируйте предыдущие функции так, чтобы на вход они принимали
  // необходимые данные для работы. Параметр должен быть опциональным.

  // хах, я сразу так сделал

  // 4 задание
  // Напишите функцию решения квадратного уравнения, используя вложенные функции.
  //Вычисление дискриминанта, нахождение x1 и x2 выполните во вложенных функциях.
  //Главная функция должна возвращать готовый результат. Функция возвращает ответ
  //в строке (String). Есть три вида результата:
  // 1) Уравнение не имеет решения так как его дискриминант меньше нуля;
  // 2) Квадратное уравнение имеет единственное решение;
  // 3) Квадратное уравнение имеет два разных корня.

  String solutionEquation(double a, double b, double c) {
    double discriminant() {
      return pow(b, 2) - 4 * a * c;
    }

    double x1() {
      return (-b + sqrt(discriminant())) / (2 * a);
    }

    double x2() {
      return (-b - sqrt(discriminant())) / (2 * a);
    }
    //print('Дис:  ${discriminant()}, x1 = ${x1()}, x2 = ${x2()}');
    if (pow(b, 2) - 4 * a * c < 0)
      return 'Уравнение не имеет решения так как его дискриминант меньше нуля';
    else if (pow(b, 2) - 4 * a * c == 0)
      return 'Квадратное уравнение имеет единственное решение';
    else 
      return 'Квадратное уравнение имеет два разных корня';
  }

  print(solutionEquation(3, -14, -5));
  // ЗАЧЕМ НАМ СЧИТАТЬ Х1 и Х2 ЕСЛИ МЫ МОЖЕМ ПО ДИСКРИМИНАНТУ ОПРЕДЕЛИТЬ СКОЛЬКО РЕШЕНИЙ ИМЕЕТ?
}
